//
//
//
//package cn.tedu.straw.portal.security;
//
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.context.annotation.Bean;
//import org.springframework.context.annotation.Configuration;
//import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
//import org.springframework.security.config.annotation.web.builders.HttpSecurity;
//import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
//import org.springframework.security.crypto.password.NoOpPasswordEncoder;
//import org.springframework.security.crypto.password.PasswordEncoder;
//
//@Configuration
////继承框架的WebSecurityConfigurerAdapter
//public class WebSecurityConfigurer extends WebSecurityConfigurerAdapter {
//    //容器里面有了就可以自动装配进来了,Spring里面有什么就给他自动赋值了
//            @Autowired
//            //在写成 UserDetailsService UserDetailsService;时有两个bean一个是自己写的一个是框架给的,
//            //这里我们把他定义为子类的 UserDetailsServiceImpl
//            /*
//            Could not autowire. There is more than one bean of 'UserDetailsService' type.
//            Beans:
//            inMemoryUserDetailsManager   (UserDetailsServiceAutoConfiguration.class)
//            userDetailsServiceImpl   (UserDetailsServiceImpl.java)
//            * */
//            UserDetailsServiceImpl userDetailsService;
//
//
//    @Bean
//   /*auth.userDetailsService(userDetailsService);这里userDetailsService,默认需要一个被加密的密码
//   所以要指定一个加密器
//    */
//  public PasswordEncoder passwordEncoder(){
//       //配置密码加密器
//       //Spring Security会自动将用户提交的密码使用这个密码加密器在对比
//       //NoOpPasswordEncoder.getInstance();他默认了你的密码是没有加密类型的
//      return NoOpPasswordEncoder.getInstance();
//    };
//
//    //重写生成一个configure(AuthenticationManagerBuilder auth) 方法
//    @Override
//    //Authentication  验证授权的意识  方法的验证在这里完成
//    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
//     // 配置身份验证
//        auth.userDetailsService(userDetailsService);
//    }
//
//    @Override
//    protected void configure(HttpSecurity http) throws Exception {
//        //配置授权
//        http.authorizeRequests().antMatchers();
//    }
//
//
//
//
//
//
//    @Override
//    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
//
//    }
//
//    @Override
//    protected void configure(HttpSecurity http) throws Exception {
//        // 访问控制
//        // authorizeRequests()：对请求进行验证
//        // antMatchers()：设置请求路径
//        // permitAll()：直接许可，即不需要验证
//        // anyRequest()：除了此前配置过的URL以外的所有请求
//        // authenticated()：必须已经验证
//        // formLogin()：通过登录表单来验证用户登录
//        // csrf()：跨域攻击
//        // disable()：禁止
//
//        // 登录页面的URL
//        String loginUrl = "/login.html";
//        // 处理登录表单的URL
//        String loginProcessingUrl = "/login";
//        // 不需要登录即可请求的URL（白名单）
//        String[] urls = {
//                loginUrl,
//                loginProcessingUrl,
//                "/index.html",
//                "/register.html",
//                "/portal/vrduser/register/user",
//                "/browser_components/**",
//                "/css/**",
//                "/portal/**",
//                "/img/**",
//                "/js/**",
//                "/npm/**",
//                "/favicon.ico",
//                "/package-lock.json",
//                "/add.html",
//                "/update.html",
//                "/update**",
//                "/aalogin.html"
//        };
//
//        http.authorizeRequests()
//                .antMatchers(urls).permitAll()
//                .anyRequest().authenticated();
//
//        http.formLogin()
//                .loginPage(loginUrl)
//                .loginProcessingUrl(loginProcessingUrl);
//
//        http.csrf().disable();
//
//    }
//
//}
//
//
//
